package com.zyq.service;

import com.zyq.model.entity.RiskLevel;
import com.zyq.model.request.UserDto;
import com.zyq.model.entity.User;
import com.zyq.model.request.UserRequest;
import com.zyq.model.response.DoctorsResponse;
import com.zyq.model.response.HomePageUser10Response;
import com.zyq.model.response.UserResponse;
import com.zyq.model.response.UserStatusResponse;

import java.util.List;

/**
 *
 * @author dolyw.com
 * @date 2018/8/9 15:44
 */
public interface IUserService extends IBaseService<UserDto> {

    /**
     * 查找用户状态
     * @param account
     * @return
     */
    int getStatusByAccount(String account);

    /**
     * 插入用户信息
     * @param user
     */
    int insertUser(User user);

    /**
     * 查询需要审核的用户
     * @return
     */
    List<UserStatusResponse> getUnAuthorizedUserList(Long status);

    /**
     * 更新用户状态
     * @param user
     */
    int updateStatus(User user);



    /**
     * 用户点赞文章
     * @param userId
     * @param articleId
     */
    int insertGetLike(String userId, String articleId);

    /**
     * 取消用户点赞文章
     * @param userId
     * @param articleId
     */
    int deleteGetLike(String userId, String articleId);

    /**
     * 用户收藏文章
     * @param userId
     * @param articleId
     */
    int collectArticle(String userId, String articleId);

    /**
     * 取消用户点赞文章
     * @param userId
     * @param articleId
     */
    int cancelCollectionArticle(String userId, String articleId);

    /**
     * 关注
     */
    int insertAttention( String userId,  String attentionId);

    /**
     * 取关
     */
     int deleteAttention( String userId,  String attentionId);

    /**
     * 加入用户角色表
     * @param userId
     * @param roleId
     */
    int insertUserRole(Long userId, Long roleId);

    /**
     * 插入用户健康信息
     * @param score
     */
    RiskLevel updateHealthAssessmentByUser(Long score , User user);

    /**
     * 获取用户的所有信息
     * @param userResponse
     * @return
     */
    void getUserAll(UserResponse userResponse);

    /**
     * 查找医生
     * @return
     */
    List<DoctorsResponse> recommendDoctors(int page);


    /**
     * 获取所有用户的信息
     * @param
     * @return
     */
//    List<UserRequest> selectAllUserAndRole();

    /**
     * 通过id查找用户信息
     * @param id
     * @return
     */
    UserDto selectById(Integer id);

    /**
     * 通过用户id查找粉丝id
     */
    public List<Long> selectFans(Long id);

    /**
     * 今日之星
     * @return
     */
    List<HomePageUser10Response> select10();

    /**
     * 查看关注
     * @param userId
     * @param attentionId
     * @return
     */
    int flagAttention(Long userId, Long attentionId);
}
